package https

import "strings"

// 链式操作支持

// 追加请求参数
//
//	m	待追加的参数信息
func (c *CURL) Param(m map[string]string) *CURL {
	if c.Error != nil {
		return c
	}
	if c.Param_quest == nil {
		c.Param_quest = map[string]string{}
	}
	for k, v := range m {
		c.Param_quest[k] = v
	}
	return c
}

// 追加请求参数
//
//	k	请求参数的参数名
//	v	请求参数的参数值
func (c *CURL) ParamKV(k, v string) *CURL {
	return c.Param(map[string]string{
		k: v,
	})
}

// JSON格式的请求参数追加
//
//	m	追加的参数列表（可直接传入map[string]any{"_":xxx}(会在map最外层有且仅有_下标时才会直接取其内容进行传输)）
func (c *CURL) ParamJson(m map[string]any) *CURL {
	if c.Error != nil {
		return c
	}
	if c.ParamJson_quest == nil {
		c.ParamJson_quest = map[string]any{}
	}
	for k, v := range m {
		c.ParamJson_quest[k] = v
	}
	return c
}

// 设置Header请求头
//
//	k	header下标
//	v	header下标对应的值
func (c *CURL) HeaderKV(k, v string) *CURL {
	return c.Header(map[string]string{
		k: v,
	})
}

// 设置Header请求头
//
//	h	header请求头的键值对信息
func (c *CURL) Header(h map[string]string) *CURL {
	if c.Error != nil {
		return c
	}
	if c.Header_quest == nil {
		c.Header_quest = map[string]string{}
	}
	for k, v := range h {
		c.Header_quest[k] = v
	}
	return c
}

// 追加Header请求头信息
//
//	token	JWT编码的Token加密信息
func (c *CURL) Authorization(token string) *CURL {
	return c.header_default("Authorization", "Bearer "+token)
}

// 设置cookie集合
//
//	cookie_param	cookie参数值
func (c *CURL) Cookie(cookie_param []string) *CURL {
	return c.header_default("cookie", strings.Join(cookie_param, ";"))
}
